]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
entry: Make sure we chain up in enter/leave handlers
authorJasper St. Pierre <jstpierre@mecheye.net>
Fri, 15 Nov 2013 16:08:29 +0000 (11:08 -0500)
committerJasper St. Pierre <jstpierre@mecheye.net>
Fri, 15 Nov 2013 17:51:19 +0000 (12:51 -0500)
To ensure that the focus tracking executes correctly.

https://bugzilla.gnome.org/show_bug.cgi?id=706749

src/st/st-entry.c

index 0ddd1ff264627294f2fcb54efa3423fe0f3ed51c..3cc61aabfc86112f2e68c307804fbce4e830256e 100644 (file)
@@ -700,13 +700,23 @@ st_entry_set_cursor (StEntry  *entry,
 }
 
 static gboolean
-st_entry_crossing_event (ClutterActor         *actor,
-                         ClutterCrossingEvent *event)
+st_entry_enter_event (ClutterActor         *actor,
+                      ClutterCrossingEvent *event)
 {
   if (event->source == ST_ENTRY (actor)->priv->entry && event->related != NULL)
-    st_entry_set_cursor (ST_ENTRY (actor), (event->type == CLUTTER_ENTER));
+    st_entry_set_cursor (ST_ENTRY (actor), TRUE);
 
-  return FALSE;
+  return CLUTTER_ACTOR_CLASS (st_entry_parent_class)->enter_event (actor, event);
+}
+
+static gboolean
+st_entry_leave_event (ClutterActor         *actor,
+                      ClutterCrossingEvent *event)
+{
+  if (event->source == ST_ENTRY (actor)->priv->entry && event->related != NULL)
+    st_entry_set_cursor (ST_ENTRY (actor), FALSE);
+
+  return CLUTTER_ACTOR_CLASS (st_entry_parent_class)->leave_event (actor, event);
 }
 
 static void
@@ -741,8 +751,8 @@ st_entry_class_init (StEntryClass *klass)
   actor_class->key_press_event = st_entry_key_press_event;
   actor_class->key_focus_in = st_entry_key_focus_in;
 
-  actor_class->enter_event = st_entry_crossing_event;
-  actor_class->leave_event = st_entry_crossing_event;
+  actor_class->enter_event = st_entry_enter_event;
+  actor_class->leave_event = st_entry_leave_event;
 
   widget_class->style_changed = st_entry_style_changed;
   widget_class->navigate_focus = st_entry_navigate_focus;